1. Field of the Invention
The present invention relates to information management systems and more particularly to a method for deferring the deletion of control blocks used by transaction manager programs.
2. Description of the Related Art
Transaction management systems, such as IBM's ‘Information Management System—IMS’ typically use control blocks to represent and manage resources that are defined to the system, such as allowed transactions, programs and databases. These control blocks contain the definitional attributes of the resource, including the name of the resource, and also the operational status, such as ‘scheduled’ or ‘stopped’, of the resource. A control block for a transaction resource may also include the name of the application program that is to be scheduled when the transaction is received. A control block for a program resource contains the name of the application program and may also contain the language in which the application program is written.
Resource control blocks are kept on queues, such as a linked list in which each resource control block points to the next resource control block on the queue. When the transaction management system needs to locate a control block for a resource, it scans the control blocks on the queue looking for a control block with the same name as the resource. For example, when a transaction comes in, the name of the application program associated with the transaction is obtained from an associated transaction control block. The program control block is then located and the application program is scheduled and given control of certain processing resources.
While the program is running, it has a status of scheduled. Programs cannot be changed or deleted while they are scheduled.
In a multi-tasking environment, a control block may be referenced concurrently by multiple tasks without explicitly informing the task which originally created the control block, i.e. the ‘owning task’. If the owning task or another task deletes the storage while other tasks are referencing it, those other tasks could abnormally terminate when they try to access the storage. In order to prevent this type of failure from occurring, there needs to be a way to:                prevent a control block from being deleted when it is in use by a long-running process task,        logically delete the control block first when it is no longer in use by a long-running process task, but may still be in use or referenced by a short-running process task, and to only physically delete the control block at a time when all short-running process tasks have finished accessing the block        
There is a long felt need, within transaction management systems, for a computationally efficient method of deleting control blocks while ensuring that all short running processes have stopped referencing these control blocks.
To solve the aforementioned problems associated with managing control blocks in a transaction management system, the present invention is a unique method for deleting control blocks while avoiding complex serialization (CS) algorithms, such as locking and semaphore types of algorithms. The present invention also avoids the use of counts associated with each block as is known in the prior art.